A storage system including a first storage device and a second storage device that have different access speeds has recently been developed. Assume here that the access speed and storage capacity of the first storage device are high and small, respectively, and that the access speed and storage capacity of the second storage device are lower and greater than those of the first storage device, respectively. The storage system is realized by hierarchically combining the first storage device (hereinafter, referred to as the high-speed storage device) and the second storage device (hereinafter, referred to as the low-speed storage device). This storage system is also called a tiered storage system.
In the tiered storage system, data having a high access frequency is located in the storage area of the high-speed storage device, and data having a low access frequency is located in the storage area of the low-speed storage device. This arrangement (namely, tiering) enables the tiered storage system to realize both high performance and low cost.
In order to realize sufficiently effective tiering, it is necessary to appropriately determine an area (tier) in which data is to be located, based on, for example, the frequency of use of the data. In view of this, in the conventional techniques, a storage controller in the tiered storage system manages the count of accesses to each area (for example, a logical area), using an access count table. Based on the access count table, the storage controller relocates data in a logical area having a large access count to the high-speed storage device, and relocates data in a logical area having a small access count to the low-speed storage device.
By the way, recent storage systems including the tiered storage system generally have a copy-on-write function. Assume here that in the tiered storage system having its copy-on-write function made effective, an application operable on a computer overwrites new data (second data) in a first position (more specifically, a first relative position) on a first file. Also assume that the first position on the first file is associated with a first logical area, and hence that data (first data) in the first position is stored in the first logical area.
In this case, in accordance with an access request from a file system, the storage controller reads the first data from the first logical area (old area), and writes (i.e., copies) the read first data to a second logical area (new area) as a free area, different from the first logical area. After that, the storage controller writes (overwrites) the second data to the second logical area. That is, the storage controller replaces the copy of the first data with the second data. The above-mentioned series of operations including reading, writing (coping) and writing (overwriting) is called a copy-on-write operation.
The application recognizes that the second data has been overwritten (written) to the data (first data) in the first position on the first file, regardless of the copy-on-write operation. However, in the copy-on-write operation, the second data is written to a new area different from the copy destination of the first data, i.e., the old area storing the first data. In this case, the storage controller records an access count associated with accesses to the first position on the first file so that the access count is divided into an access count associated with accesses to the old area, and an access count associated with accesses to the new area. As a result, it is possible, for example, that even data, which is to be located in the high-speed storage device in view of a file access status, will be located in the low-speed storage device, which may reduce user's convenience.